function Channels:TalkRanged( ply, text, range )
	local Ents = ents.FindInSphere( ply:GetPos(), range )
	local Colour = team.GetColor( ply:Team() )
	local Name = ply:Name()
	local rp = RecipientFilter()
	
	for k, v in pairs( Ents ) do
		if v:IsPlayer() then 
			rp:AddPlayer( v ) 
			print( "Talking to " .. v:Name() )
		end
	end
	
	umsg.Start( "ChC", rp )
		umsg.Char( Colour.r - 128 )
		umsg.Char( Colour.g - 128 )
		umsg.Char( Colour.b - 128 )
		umsg.String( Name )
		umsg.Char( 255 - 128 )
		umsg.Char( 255 - 128 )
		umsg.Char( 255 - 128 )
		umsg.String( text )
	umsg.End()
end

function Channels:ChanSay( ply, text, channel )
	local Colour = team.GetColor( ply:Team() )
	local Name = ply:Name()
	local rp = RecipientFilter()
	
	for k, v in pairs( player.GetAll() ) do
		if string.Trim( string.lower( v.Channel or "" ) ) == channel then
			rp:AddPlayer( v )
		end
	end
	
	umsg.Start( "ChC", rp )
		umsg.Char( Colour.r - 128 )
		umsg.Char( Colour.g - 128 )
		umsg.Char( Colour.b - 128 )
		umsg.String( Name .. " [" .. string.sub( channel or "???", 1, 9 ) .. "]" )
		umsg.Char( 255 - 128 )
		umsg.Char( 255 - 128 )
		umsg.Char( 255 - 128 )
		umsg.String( text )
	umsg.End()
end

function Channels:Notify( ply )
	local rp = RecipientFilter()
	rp:AddPlayer( ply )
	
	umsg.Start( "ChN", rp )
		umsg.String( ply.Channel or "" )
	umsg.End()
end

function Channels:TellClients( Name, Channel )
	umsg.Start( "ChE" )
		umsg.String( Name )
		umsg.String( Channel )
		umsg.Bool( Channels.List[ Channel ][2] ~= nil  )
	umsg.End()
end